﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace WTwitter.ViewModel.Utility {
	/// <summary>
	/// VIewModelの表示要求
	/// </summary>
	sealed class RequestShowViewModelEventArgs : EventArgs {
		private ClosableViewModelBase _vm;
		/// <summary>
		/// 表示したいViewModel
		/// </summary>
		/// <param name="target"></param>
		public RequestShowViewModelEventArgs(ClosableViewModelBase target) {
			_vm = target;
		}

		/// <summary>
		/// 表示したいViewModel
		/// </summary>
		public ClosableViewModelBase ViewModel {
			get { return _vm; }
		}
	}

	/// <summary>
	/// ViewModelの表示をViewに要求するためのコネクタクラス
	/// シングルトン
	/// </summary>
	sealed class ViewConnector {
		static private ViewConnector _viewConnector = new ViewConnector();
		static public ViewConnector Instance {
			get { return _viewConnector; }
		}

		/// <summary>
		/// 表示する
		/// </summary>
		/// <param name="target">表示したいViewModel</param>
		public void Show(ClosableViewModelBase target) {
			Debug.Assert(RequestShowWindow != null, "RequestShowWindowが初期化されていません");

			RequestShowWindow(this, new RequestShowViewModelEventArgs(target));
		}

		/// <summary>
		/// 新しいWindowでの表示要求
		/// </summary>
		public event EventHandler<RequestShowViewModelEventArgs> RequestShowWindow;
	}
}
